<template>
  <div>
    <div class="outer">
      <h2>List</h2>
      <!-- 绑定点击事件,点击后实现数据传递 -->
      <button @click="sendDataToParent">向父组件发送数据</button>

      <!-- 卸载List组件 -->
      <button @click="destroyList">卸载list组件</button>
    </div>
  </div>
</template>

<script>
export default {
  name: "List",
  data() {
    return {
      list: [
        { name: "小老妹", age: 18 },
        { name: "小瘪三", age: 19 },
        { name: "小不点", age: 20 },
      ],
    };
  },
  methods: {
    sendDataToParent() {
      //this.$emit触发当前实例上的自定义事件。
      // 附加参数都会传给监听器回调。
      this.$emit("atguigu", this.list);
    },
    destroyList() {
      // 卸载List组件
      this.$destroy();
    },
  },
  // 组件卸载后,事件还存在.所以利用生命周期函数,beforeDestroy在卸载组件前解绑事件函数
  beforeDestroy() {
    this.$off("atguigu");
  },

  /* 
      真正的解绑:
        是在被绑定自定义事件的子组件中解绑调用自定义事件
    */
};
</script>

<style scoped>
.outer {
  height: 200px;
  margin: 30px;
  background: pink;
}
</style>